package com.atguigu.gmall.cart.service;

import com.atguigu.gmall.cart.entity.CartInfo;
import com.atguigu.gmall.product.entity.SkuInfo;

import java.util.List;

public interface CartService {

    /**
     * 决定用哪个购物车的键
     *
     * @return
     */
    String determinCartKey();

    /**
     * 给购物车中添加一项商品
     *
     * @param skuId
     * @param skuNum
     * @param cartKey
     * @return
     */
    SkuInfo addItemToCart(Long skuId, Integer skuNum, String cartKey);

    /**
     * 获取购物车中所有商品
     *
     * @param cartKey
     * @return
     */
    List<CartInfo> getCartList(String cartKey);

    /**
     * 修改购物车中指定商品的数量
     *
     * @param cartKey
     * @param skuId
     * @param num
     */
    void updateItemCount(String cartKey, Long skuId, Integer num);

    /**
     * 修改购物车中指定商品的选中状态
     *
     * @param cartKey
     * @param skuId
     * @param status
     */
    void updateItemCheckStatus(String cartKey, Long skuId, Integer status);

    /**
     * 删除购物车中指定商品
     *
     * @param cartKey
     * @param skuId
     */
    void deleteCartItem(String cartKey, Long skuId);

    /**
     * 删除选中的商品
     *
     * @param cartKey
     */
    void deleteChecked(String cartKey);
}
